package com.kotodama.application.cqrs.handlers;

import com.kotodama.application.cqrs.commands.Command;

/**
 * 命令处理器接口
 * 
 * @param <C> 命令类型
 * @param <R> 返回结果类型
 */
public interface CommandHandler<C extends Command, R> {

    /**
     * 处理命令
     * 
     * @param command 要处理的命令
     * @return 处理结果
     */
    R handle(C command);

    /**
     * 获取支持的命令类型
     * 
     * @return 命令类型
     */
    Class<C> getSupportedCommandType();
}